<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of validadorCedula
 *
 * @author Usuario
 */
class ValidadorCedula extends CValidator {

    protected function validateAttribute($object, $attribute)
    {
        $condition = false;
        $cedula = str_split($object->$attribute, 9);
        $mensaje = 'Número de cedula incorrecto';
        //validar si los 2 primeros digitos son de una provincia 1-24
        $digito = str_split($object->$attribute, 2);
        if ($digito[0] < 0 || $digito[0] >= 24)
        {
            $mensaje = 'La provincia no existe';
            $condition = true;
        }
        //validar que la cantidad de digitos sea 10 para cedula o 13 para RUC
        if ((strlen($object->$attribute) != 10 && strlen($object->$attribute) != 13) && !$condition)
        {
            $mensaje = 'La cantidad de digitos es incorrecta';
            $condition = true;
        }
        //validar cedula por digito
        if (!$condition)
        {
            $impar = 0;
            $par = 0;
            foreach (str_split($cedula[0]) as $key => $value)
            {
                if (fmod($key, 2))
                {
                    $par+=$value; //suma posiciones impares
                } else
                {
                    $value * 2 > 9 ? $impar+=$value * 2 - 9 : $impar+=$value * 2;
                }
            }
            $total = $par + $impar; //suma total
            $total = fmod($total, 10);
            $total > 0 ? $total = 10 - $total : NULL; //resta de la decena superior
            $digito = str_split($object->$attribute, 1);
            $total != $digito[9] ? $condition = true : NULL; //verifica que coincida con el digito autoverificador
        }
        if ($condition)
        {
            $this->addError($object, $attribute, $mensaje);
        }
    }

    public function clientValidateAttribute($object, $attribute)
    {

        // check the strength parameter used in the validation rule of our model
        return 'N17'; //var_dump($object->$attribute,$attribute);

        $condition = true;
//        $condition = "true";

        return "
            if(" . $condition . ") {
                messages.push(" . CJSON::encode(var_dump($object->$attribute, $attribute)) . ");
            }
            ";
    }

}

?>
